package com.dynamicPlanning;

import java.util.Scanner;

/**
 * 题目描述：有一楼梯共M级，刚开始时你在第一级，若每次只能跨上一级或二级，要走上第M级，共有多少种走法？
 * 输入： 输入数据首先包含一个整数N，表示测试实例的个数，然后是N行数据，每行包含一个整数M（1<=M<=40）,表示楼梯的级。
 * 输出： 对于每个测试用例，请输出不同走法的数量。
 */
public class 上楼梯 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] result = new int[n];
        for (int i = 0; i < n; i++) {
            int m = scanner.nextInt();
            result[i] = dp(m);
        }
        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i]);
        }
    }

    public static int dp(int m){
        if (m==1){
            return 1;
        }
        if (m==2){
            return 2;
        }
        int[] result = new int[m];
        result[0]=1;
        result[1]=1;
        for (int i = 2; i < m; i++) {
            result[i]=result[i-1]+result[i-2];
        }
        return  result[m-1];
    }
}
